Daniel van Vugt [Thu, 26 Sep 2024 10:26:21 +0000 (18:26 +0800)]
st/theme-node-drawing: Trace the correct path for inset box shadows
Previously we just copied the outer path and scaled it down, but that
resulted in an inconsistent thickness at the corners because the pivot
points for the arcs also moved inward.
So now we trace the inset path explicitly to maintain the correct
thickness (spread) around all the corners.
The spec actually mentions you need to do it in section 6.1 [1]:
> Note that for inner shadows, expanding the shadow (creating more
> shadow area) means contracting the shadow’s perimeter shape.
Despite the fact the example diagram gets it wrong in section 6.1.1 [2],
it does then follow with more confirmation that the shadow radius should
be reduced:
> To preserve the box’s shape when spread is applied, the corner radii
> of the shadow are also increased (decreased, for inner shadows) from
> the border-box (padding-box) radii by adding (subtracting) the spread
> distance (and flooring at zero).
gdm: Actually wait for pending messages being notified on failures
We had code to ensure that all the queued messages sent by a PAM module
were shown by waiting some time to give the user time to read them, but
due to a typo this code never executed.
Alessandro Bono [Fri, 20 Oct 2023 20:00:59 +0000 (22:00 +0200)]
locatePointer: Mark the animation as required
When the accessibility option "Reduce Animation" is turned on, the
accessibility option "Locate Pointer" stops to work. This is because
the animation is not marked as required. Mark it as such.
Alessandro Bono [Fri, 20 Oct 2023 20:00:55 +0000 (22:00 +0200)]
ripples: Allow to specify whether the ripple is required
The ripples are used both for the "Hot Corner" animation and for the
"Locate Pointer" animation. The latter one is an accessibility feature
and should always work, even when animations are disabled. Take this
into account.
Alessandro Bono [Fri, 20 Oct 2023 20:00:47 +0000 (22:00 +0200)]
environment: Allow marking animations as required
There are cases when we want to mark an animation as required. For
example, we want the "Locate Pointer" animation to work even when
the animation as marked as disabled. Take this into account when
easing an actor.
Alessandro Bono [Fri, 20 Oct 2023 20:00:40 +0000 (22:00 +0200)]
animationUtils: Allow marking animations as required
There are cases when we want to mark an animation as required. For
example, we want the "Locate Pointer" animation to work even when
the animation is marked as disabled. Take this into account when
adjusting the animation time.
All timing parameters should take the `slow-down-factor` and
`enable-animations` settings into account, but the delay parameter
of property/adjustment animations was forgotten.
ibusManager: Change return value of `setCompletionEnabled()`
The return value currently indicates whether the request was
successful, namely `setCompletionEnabled(false)` will return
`true` if completions were successfully disabled.
However the only caller that uses the value uses it to indicate
whether completions were enabled.
Given that nothing else uses the value, change the meaning to
match the caller, and indicate whether completions are enabled
after the call returns.
Thore Sommer [Mon, 2 Sep 2024 08:39:46 +0000 (10:39 +0200)]
status/network: Add user permissions to new wifi connections
When creating a new NM connection they are by default system connections. A
user cannot create them if they don't have the correct polkit permissions
(org.freedesktop.NetworkManager.settings.modify.system).
If a user tried to add a new connection in the drop down menu, then they got
no password prompt and NM logged the following:
[...] audit: op="connection-add-activate" pid=1872 uid=1000 result="fail" \
reason="Insufficient privileges"
This change adds the current user to the user permissions for the new
connection, if the user has no permissions to modify the system connections,
which copies the behavior of GNOME Settings.
Jonas Ådahl [Thu, 29 Aug 2024 13:26:39 +0000 (15:26 +0200)]
ibus-candidate-popup: Scale coordinates from IBus
The coordinates are effectively in the windowing system coordinate
space, which when scaling Xwayland, we need to scale these. Do this with
the Meta.Window.protocol_to_stage() function on the focused window,
which handles it correctly for the corresponding windowing system and
configuration.
quick-settings: Handle interrupted menu animations
If the menu is closed while it is being opened, we should skip the next
animation in the chain. Similarly, if a menu is opened while it is being
closed, we should continue the animation from the previous state instead
of resetting height to 0.
After the old tool transformed into the extensions app, we added
a wrapper for compatibility with extensions that spawned the
command to open their preferences.
This was a long time ago.
As the ESM port happened since, we *know* that all extensions
are newer than that change. And as spawning the old prefs tool
is no longer accepted in review, no extension that is compatible
with current shell versions still does it.
Florian Müllner [Wed, 28 Aug 2024 10:52:05 +0000 (12:52 +0200)]
man: Port the man pages to reStructuredText
It's as human-readable as asciidoc and produces the same results,
but the tooling is more widely supported. Also both GLib and GTK
switched to it for their man pages, so rst2man is already a
dependency of the platform.
Florian Müllner [Wed, 28 Aug 2024 10:55:13 +0000 (12:55 +0200)]
build: Stop pre-generating man pages
The original asciidoc project is still stuck on python2, so on
distros that didn't switch to a fork (like Fedora), it pulls
in over 100M of legacy dependencies.
However we are about to move our man pages to reStructuredText
which doesn't have that issue, and which is already used for
GLib's and GTK's man pages.
Florian Müllner [Wed, 28 Aug 2024 13:30:50 +0000 (15:30 +0200)]
ci: Include docutils in sysext image
We need rst2man to switch from asciidoc to reStructuredText for
man pages. Pull it in ourselves until the change lands and
gnome-build-meta is updated.
Daniel Sheeler [Sat, 24 Aug 2024 16:01:20 +0000 (11:01 -0500)]
dash: Show move cursor on app icon dnd to dash
Previously, the 'copy' drag and drop cursor was displayed when dragging
an application icon to the dash (which adds the app to favorites),
but the operation is really a move, so ensure the 'move'
dnd cursor is used.
ci: Bump CI/CD component version for building system extensions
This new version allows us to specify a branch, which will be needed
soon to freeze the GNOME OS version used in stable branches e.g. once
GNOME OS 47 is available.
See https://gitlab.gnome.org/GNOME/gnome-build-meta/-/issues/872
Alessandro Bono [Mon, 19 Aug 2024 16:08:42 +0000 (18:08 +0200)]
loginDialog: Don't assume this._user is always defined
There are cases where this._user might be null when a session
is opened. This is because the user is not selected via GDM but
it is set through PAM. This happens when logging with smart card
or with credential managers, for example.
Given the session-id of the opened session, look for the owner.
This fixes the following error:
```
gnome-shell[153293]: TypeError: this._user is null
Alessandro Bono [Mon, 19 Aug 2024 16:02:04 +0000 (18:02 +0200)]
loginDialog: Get username directly from the conflicting session
The conflicting session is owned by the same user per definition.
Use the Name property of the conflicting session to get the
username instead of assuming that `this._user` is defined and
passing the username around.
Alessandro Bono [Mon, 19 Aug 2024 09:47:45 +0000 (11:47 +0200)]
loginDialog: Catch possible errors when session is opened
Since commit df84854d9073c457d79d7c2e6a5750428c52ff01 the function
_onSessionOpened() is now async. This means that if an error occurs
we get the following warning:
```
gnome-shell[1014]: Unhandled promise rejection. To suppress this
warning, add an error handler to your promise chain with .catch()
or a try-catch block around your await expression. Stack trace of
the failed promise:
_onSessionOpened@resource:///org/gnome/shell/gdm/loginDialog.js:1166:27 @resource:///org/gnome/shell/ui/init.js:21:20
```
Follow the suggestion and add a try-catch block in order to reveal
what the error is. In the catch phase, reset the faded AuthPrompt
otherwise we can't retry with another user.
Jonas Ådahl [Mon, 15 Jul 2024 19:28:58 +0000 (21:28 +0200)]
st/theme-node-drawing: Fix corner pipeline leak
The corner pipelines state theme node paint state was not necessarily
free of existing pipelines, so make sure to free them before looking up
new ones.
This avoids leaking thousands of CoglPipeline instances after toggling
the overview a bunch of times.
Fixes: e1868cab1a ("st/theme-node-drawing: Factor in border radius in update_resources()")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3421>